home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #02 (Apr85-Jul85) / modula 2 / modula Vol. 1 #6 / Matmul.MOD < prev   
Text File  |  1985-03-04  |  2KB  |  83 lines

  1. MODULE Matmul;
  2.  
  3. FROM InOut     IMPORT ReadCard, WriteCard, WriteString, WriteLn;
  4. FROM Terminal     IMPORT ClearScreen;
  5. FROM RealInOut     IMPORT ReadReal, GWriteReal;
  6. FROM QuickDrawTypes IMPORT Rect, GrafPtr, Str255, LongCard;
  7. FROM ToolBoxTypes   IMPORT WindowPtr, WindowRecord;
  8. FROM Strings     IMPORT StrModToMac;
  9. FROM SYSTEM    IMPORT ADDRESS;
  10.  
  11. CONST     CX = 355B;  QuickDrawModNum = 1; ToolBoxModNum = 2;
  12.  
  13. TYPE     Ptr = ADDRESS;
  14.  
  15. VAR     i,j,k : CARDINAL;
  16.     sum,p,q : REAL;
  17.     a : ARRAY [1..20] OF ARRAY [1..30] OF REAL;
  18.     b : ARRAY [1..30] OF ARRAY [1..20] OF REAL;
  19.     c : ARRAY [1..30] OF ARRAY [1..30] OF REAL;
  20.     Wbounds : Rect;
  21.     Wtitle : Str255;
  22.     Wnew : WindowPtr;
  23.     WrefCon, behind, OnHeap: LongCard;
  24.     
  25. PROCEDURE SetPort (port : WindowPtr); 
  26.       CODE CX; QuickDrawModNum; 4 END SetPort;
  27.     
  28. PROCEDURE PortSize (width, height : INTEGER); 
  29.       CODE CX; QuickDrawModNum; 8 END PortSize;
  30.      
  31. PROCEDURE TextFont (font : INTEGER); 
  32.       CODE CX; QuickDrawModNum; 32 END TextFont;
  33.       
  34. PROCEDURE TextSize (size : INTEGER); 
  35.       CODE CX; QuickDrawModNum; 35 END TextSize;
  36.       
  37. PROCEDURE NewWindow (wStorage : Ptr;  boundsRect : Rect;
  38.                      title : Str255;  visible : BOOLEAN;
  39.              theProc:INTEGER; behind : WindowPtr;
  40.              goAwayFlag:BOOLEAN; refCon:LongCard) : WindowPtr; 
  41.       CODE CX; ToolBoxModNum; 50 END NewWindow;
  42.  
  43. PROCEDURE DrawGrowIcon (theWindow : WindowPtr); 
  44.       CODE CX; ToolBoxModNum; 64 END DrawGrowIcon;
  45.       
  46. PROCEDURE SelectWindow (theWindow : WindowPtr); 
  47.       CODE CX; ToolBoxModNum; 56 END SelectWindow;
  48.  
  49. BEGIN
  50. WITH WrefCon DO h := 0; l := 0 END;
  51. WITH behind DO h := 65535; l := 65535 END;
  52. WITH OnHeap DO h := 0; l := 0 END;
  53. WITH Wbounds DO top := 50; left := 20; bottom := 300; right := 500 END;
  54. StrModToMac (Wtitle, "Demo Window"); TextFont(0); TextSize(12);
  55. Wnew := NewWindow(Ptr(OnHeap),Wbounds,Wtitle,TRUE,0,
  56.                   WindowPtr(behind),TRUE,WrefCon);
  57. SetPort(Wnew); SelectWindow(Wnew); DrawGrowIcon(Wnew);
  58. PortSize(464,234); ClearScreen; TextFont(3); TextSize(9);
  59. WriteString("Initialization values for a: "); ReadReal(p);
  60. WriteString(", and b: "); ReadReal(q); WriteLn;
  61.  
  62. FOR i:= 1 TO 20 DO
  63.     FOR j:= 1 TO 30 DO
  64.             a[i][j] := p; b[j][i] := q 
  65.     END
  66. END;
  67. WriteString ("Initialization done."); WriteLn;
  68.  
  69. FOR i:= 1 TO 30 DO
  70.     FOR j:= 1 TO 30 DO
  71.         sum := 0.0;
  72.         FOR k := 1 TO 20 DO sum:=sum + a[k][i]*b[j][k]  END;
  73.         c[i][j] := sum
  74.     END
  75. END;
  76.  
  77. WriteString ("Multiplication completed."); WriteLn;
  78. WriteString (" C[15,16] = "); GWriteReal (c[15][16],10);
  79. ReadReal(p)
  80.  
  81. END Matmul.
  82.  
  83.